package org.example.classtopia.Service;

import org.example.classtopia.Model.Entity.Resource;
import org.example.classtopia.Model.dto.ResourceUploadDTO;
import org.example.classtopia.Model.dto.ResourcePageQueryDTO;
import org.example.classtopia.Model.dto.UserResourcePageQueryDTO;
import org.example.classtopia.Model.vo.ResourceListVO;
import org.example.classtopia.Model.vo.PageResultVO;
import org.example.classtopia.Model.vo.ResourceDetailVO;
import org.example.classtopia.Model.vo.ResourceStatsVO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;

public interface ResourceService {
    /**
     * 上传资源并保存到数据库
     * 
     * @param dto  资源信息
     * @param file 上传的文件
     * @return 新资源ID或上传结果
     */
    Long uploadResource(ResourceUploadDTO dto, MultipartFile file) throws Exception;

    /**
     * 下载资源，返回资源对象
     */
    org.example.classtopia.Model.Entity.Resource downloadResource(Long resourceId, Long userId) throws Exception;

    /**
     * 分页查询资源列表
     */
    PageResultVO<ResourceListVO> pageList(ResourcePageQueryDTO queryDTO);

    /**
     * 根据用户分页查询资源列表
     */
    PageResultVO<ResourceListVO> pageListByUser(UserResourcePageQueryDTO queryDTO);

    /**
     * 修改资源状态
     */
    boolean updateResourceStatus(Long resourceId, Integer status);

    /**
     * 上传图片到OSS并返回图片URL
     */
    String uploadImage(org.springframework.web.multipart.MultipartFile file) throws Exception;

    /**
     * 获取资源统计信息：总数、贡献者数量、总下载量
     */
    org.example.classtopia.Model.vo.ResourceStatsVO getResourceStats();
}
